import Vue from 'vue'
import Vuex from 'vuex'
import token from './token'
import {login} from './api/user'

Vue.use(Vuex)
const store = new Vuex.Store({
    state: {
        token: token.get()
    },
    mutations: {  // mutations是用来更改store中状态的唯一方法
        setToken(state, paramToken) {
            state.token = paramToken;
            token.set(paramToken);
        },
        logout() {
            token.clear();
        }
    },
    actions: {  // action可以包含任意的异步操作
        login({commit},user) {
            return new Promise((resolve,reject) => {
                login(user.userName,user.password).then(data => {
                    //调用mutations中的方法。commit(‘mutations方法名’,值)
                    commit('setToken',data.data.token);
                    token.setUser(data.data.user);
                    //处理token，写入vuex状态管理和localStorage
                    resolve();
                }).catch(error => {
                    reject(error);
                })
            })
        }
    }
})

export default store